######################################################
# 数值向量
######################################################
1
typeof(1)
typeof(1:1)
typeof(as(1, "integer"))
v <- c(1, 1.1)
typeof(v)
as(1.1, "integer")

######################################################
# 字符向量
######################################################
x1 = '"hello"world'
x1
#大小写敏感
X1 = 2

######################################################
# 运算符
######################################################
# 取余
26 %% 4
# 整除
26 %/% 4
# 自定义操作符
'%myop%' <- function(a, b) {2*a + 2*b}
1 %myop% 1

######################################################
# 控制结构
######################################################

# 条件语句
if(2 > 1) "大于" else "小于等于"
x <- "2"
y <- "0"
z <- "0"
switch(x, "1"="一", "2"="二", "3"="三", "其他")

# 循环
i <- 5
repeat{if(i>25) break else {print(i); i<-i+5;}}
while(i<=25) {print(i); i<-i+5}
for(i in seq(from=5, to=25, by=5)) print(i)
for(i in 1:5) print(i*5)
for(i in c(5,10,15,25,30)) print(i)

# 迭代器
install.packages("iterators")
library("iterators")
onetofive <- iter(1:5)
nextElem(onetofive)
# foreach
install.packages("foreach")
library("foreach")
foreach(i=1:5) %do% sqrt(i)
# %dopar% 并行计算

######################################################
# 访问数据结构
######################################################
# 整数向量访问
v <- 100:119
v[5]
v[1:5]
v[c(6,10)]
v[[4]]
v[-10:-1]
v[25] <- 100
# 逻辑向量访问
v[c(TRUE, FALSE, FALSE)]
v[(v %% 3 == 0)]
v[v == 103]
v[v > 105]
# 通过名称访问
list <- list(a=1, b=2)
list$a
list[c("a", "b")]
list2 <- list(c=list, d=4)
list2
list2$c$b
